iT邦幫忙

2024 iThome 鐵人賽

DAY 5
0
Python

從0開始學習Python-為未來學習AI奠定基礎系列 第 5

從0開始學習Python---print() 函數的使用與格式化輸出

  • 分享至 

  • xImage
  •  

在學習 Python 程式設計時,一開始就會接觸到 print() 函數。這個函數的基本功能就是在螢幕上顯示結果。
但是,print() 還有許多進階的用法,能更精準的控制輸出的格式,今天要介紹的就是這個部分。

print() 函數的使用

在 Python 中,print() 函數的語法格式如下:

print(value, ···, sep=” “, end=” \n ”, file=sys.stdout, flush=False)

函數的功能

這些函數提供了靈活的輸出控制,能夠滿足不同情境下的需求:

  • value:表示輸出的資料,可以一次輸出多筆資料,並用逗號分隔。
  • sep:當輸出多筆資料時,可以設定分隔符號,預設為空格。
  • end:控制下一次 print() 是否換行。預設為換行,若設為空字串,則不換行。
  • file:指定輸出的目的地,預設為螢幕 (sys.stdout),也可以設定為檔案等其他輸出設備。
  • flush:控制是否立即刷新緩衝區。預設為 False,意即不立即刷新。

格式化print()輸出

當我們希望將輸出的數據格式化呈現時,print() 函數支援多種格式化輸出語法。語法格式如下:

print(“ ···輸出格式區···  ” % (變數系列區, ··· ))

輸出格式區中,可以放置變數系列區相對應的格式化字元,這些格式化字元的基本意義如下:

  • %d:格式化整數。
  • %f:格式化浮點數。
  • %s:格式化字串。
  • %x:格式化16進位。
  • %X:格式化大寫16進位。
  • %o:格式化8進位數。
  • %e:格式化科學記號。
  • %E:格式化大寫科學記號。
    接下來實際練習看看這些格式化字元該怎麼使用~

格式化輸出的應用

  • 初次嘗試格式化輸出,還需要熟悉輸出格式區和變數系列區:
    https://ithelp.ithome.com.tw/upload/images/20240905/20168994kCVdLuipHv.png

  • 將整數與浮點數分別以%d、%f、%s 格式化(來試試看將浮點數以整數 %d 格式化後會發生什麼) :
    https://ithelp.ithome.com.tw/upload/images/20240905/20168994VEOG0lOEoK.png

浮點數以整數 %d 格式化後,小數資料會被捨去。

  • 格式化16進位和8進位輸出的實作:
    https://ithelp.ithome.com.tw/upload/images/20240905/201689944IfE6gPOHY.png

  • 格式化 %x 和 %X 的輸出實作(實作大、小寫16進位輸出記號):
    https://ithelp.ithome.com.tw/upload/images/20240905/20168994yeTWJLffLW.png

  • 格式化 %e 和 %E 輸出的實作(實作大、小寫科學記號輸出):
    https://ithelp.ithome.com.tw/upload/images/20240905/20168994q9FaMVHMz9.png

練習完之後,對格式化輸出有基本概念了:>

精準控制輸出格式

上述範例中的浮點數輸出有個明顯的缺點,那就是無法控制小數的位數。
不過,print() 函數在格式化時提供了一種功能,可以讓我們指定要保留的空間格數來顯示資料。
對應的格式化語法如下:

  • %(+|-)nd:格式化整數輸出。
  • %(+|-)m.nf:格式化浮點數輸出, m 是輸出字串寬度,n 是代表小數位數。
  • %(+|-)nx:格式化16進位整數輸出。
  • %(+|-)no:格式化8進位整數輸出。
  • %(+|-)ns:格式化字串輸出。
  • %(+|-)m.ns:m 是輸出字串寬度,n 是顯示字串長度,n 小於字串長度時會有裁減字串的效果。
  • %(+|-)e:格式化科學記號 e 輸出。
  • %(+|-)E:格式化科學記號 E 輸出。

精準控制輸出格式-應用

  • 上述的格式對於浮點數:
  1. m 代表保留多少格數給整個數字輸出(包含小數點)。
  2. n 代表小數點後保留的格數。
  3. 浮點數的格數小於 m:則會在數字的左側用空格填充。
  4. 如果小數位數多於 n:則它會被四捨五入到 n 位。
  5. 如果小數位數少於 n:則會在小數部分用零填充沒有填滿的位。

https://ithelp.ithome.com.tw/upload/images/20240905/20168994WXGc7NcPrh.png

  • 對於其他資料格式,n 代表保留多少格數空間:
  1. 保留格數空間不足:完整輸出資料。
  2. 保留格數空間太多:資料靠右對齊。
  3. 格式化數值資料或字串資料有加上負號(-):若保留格數空間有多時,資料將靠左輸出。
  4. 格式化數值資料或字串資料有加上正號(+):若輸出資料是正值時,會在左邊加上正號。

https://ithelp.ithome.com.tw/upload/images/20240905/20168994qbqcRrDA6v.png

  • 格式化應用與注意事項
    當處理超過指定寬度的字串時,字串長度超過設定的顯示長度,系統會自動裁減字串。
    此外,在處理浮點數時,超過指定小數位的部分會被四捨五入(前前張圖片,浮點數的第1個輸出格式可以看到這個現象)。
  1. 首先先實作看看裁減字串的部分:

https://ithelp.ithome.com.tw/upload/images/20240905/20168994i17naIuFrU.png

  1. 如果把格式化輸出應用在登記多人的成績:

https://ithelp.ithome.com.tw/upload/images/20240905/20168994ccPsJQZsWX.png

結語

今天學到了 print() 函數的進階用法以及格式化輸出所提供的豐富功能~~真的記不太起來所有的方法,感覺需要多用幾遍才能記住><
這些功能能夠有秩序的控制資料的顯示形式。無論是對整數、浮點數還是字串都進行了精確的格式控制,像是控制小數位數、對齊方式和裁減字串等。和上一篇的感觸一樣!格式化輸出會讓我們的輸出更整齊、能漂亮的對齊在一起,並且可讀性更高 ;)


上一篇
從0開始學習Python---字串資料型態
下一篇
從0開始學習Python---format( )函數、input( )函數、eval( )函數
系列文
從0開始學習Python-為未來學習AI奠定基礎27
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言